using System;
using System.ServiceModel;

namespace WCFDicing.ServiceContracts
{
    /// <summary>
    /// interfejs zaimplementowany w serwerze
    /// </summary>
    [ServiceContract( Namespace = "http://WCFDicing.ServiceContracts/2008/01", Name = "IDicingGame", SessionMode = SessionMode.Allowed )]
    public interface IDicingGame
    {
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Join" )]
        WCFDicing.ServiceContracts.JoinResponse Join( WCFDicing.ServiceContracts.JoinRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Bet" )]
        WCFDicing.ServiceContracts.BetResponse Bet( WCFDicing.ServiceContracts.BetRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetTable" )]
        WCFDicing.ServiceContracts.TableResponse GetTable( WCFDicing.ServiceContracts.TableRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Begin" )]
        WCFDicing.ServiceContracts.BeginResponse Begin( WCFDicing.ServiceContracts.BeginRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "CreateRoom" )]
        WCFDicing.ServiceContracts.CreateRoomResponse CreateRoom( WCFDicing.ServiceContracts.CreateRoomRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "LeaveRoom" )]
        WCFDicing.ServiceContracts.LeaveRoomResponse LeaveRoom( WCFDicing.ServiceContracts.LeaveRoomRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualPlayer" )]
        WCFDicing.ServiceContracts.ActualPlayerResponse ActualPlayer( WCFDicing.ServiceContracts.ActualPlayerRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetRoomList" )]
        WCFDicing.ServiceContracts.GetRoomListResponse GetRoomList( WCFDicing.ServiceContracts.GetRoomListRequest request );
        [OperationContract( IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "StartSimulation" )]
        WCFDicing.ServiceContracts.SimulationResponse StartSimulation( WCFDicing.ServiceContracts.SimulationRequest request );

    }
}
